# coding=utf-8

# 函数本身也可以赋值给变量，即：变量可以指向函数
# 函数名其实就是指向函数的变量！对于abs()这个函数，完全可以把函数名abs看成变量，它指向一个可以计算绝对值的函数
# 既然变量可以指向函数，函数的参数能接收变量，那么一个函数就可以接收另一个函数作为参数，这种函数就称之为高阶函数。
# 把函数作为参数传入，这样的函数称为高阶函数，函数式编程就是指这种高度抽象的编程范式。


'''变量可以指向函数, 通过该变量来调用这个函数'''
f = abs
print f(-10)


'''函数名也是变量, 对于abs()这个函数，完全可以把函数名abs看成变量，它指向一个可以计算绝对值的函数'''
print abs

'''传入函数, 一个最简单的高阶函数'''
def add(x, y, f):
    return f(x) + f(y)

print add(-5, 6, abs)
